Trong C++, giao tiếp là một luồng, chứ không phải một sự kiện lưu trữ tĩnh. Thư viện iostream sử dụng một cấu trúc phân cấp đa hình trong đó các lớp chuyên biệt như ifstream (tệp tin) và istringstream (bộ nhớ) kế thừa từ istream. Điều này cho phép Kế thừa luồng: các hàm được thiết kế cho luồng cơ sở có thể xử lý dữ liệu từ bất kỳ nguồn nào một cách minh bạch.
Ràng buộc Không thể Sao chép
Luồng đại diện cho các kết nối duy nhất, có trạng thái đến phần cứng. Để ngăn chặn nhiều đối tượng tranh chấp cùng một con trỏ tệp hoặc bộ đệm bảng điều khiển, các đối tượng I/O không thể sao chép hoặc gán. Việc thử viết mã như ofstream out1, out2; out1 = out2; sẽ dẫn đến lỗi biên dịch. Do đó, các đối tượng I/O phải được truyền vào bằng tham chiếu không hằng.
Cầu nối Tuần tự
Trong khi luồng cung cấp giao diện, các container tuần tự (vector, list) cung cấp bộ nhớ. Dữ liệu được truyền vào thường được cấu trúc thành các container này, chọn vector để tăng tốc độ hoặc list để chèn linh hoạt.